import 'dart:io';

main() {
  print('程序开始，执行 main 入口函数');

  Future(() async {
    try {
      // 1. 登录成功，返回 token
      String token = await login(username: 'admin', password: '123456');
      print('登录成功，token 是：$token');

      // 2. 根据 token 获取用户信息
      Map userInfo = await getUserInfo(token: token);
      print('用户信息是：$userInfo');

      // 3. 保存用户信息
      await saveUserInfo(userInfo: userInfo);
      print('用户信息保存成功');
    } catch (e) {
      print('登录失败，错误信息是：$e');
    } finally {
      print('不管成功失败，都会执行 finally');
    }
  });

  print('不能堵塞的代码');
}

// 1. 登录成功，返回 token
Future<String> login({required String username, required String password}) {
  return Future(() {
    sleep(Duration(seconds: 2));
    return "token123";
  });
}

// 2. 根据 token 获取用户信息
Future<Map> getUserInfo({required String token}) {
  return Future(() {
    sleep(Duration(seconds: 2));
    return {'name': '张三', 'age': 18};
  });
}

// 3. 保存用户信息
Future<void> saveUserInfo({required Map userInfo}) {
  return Future(() {
    sleep(Duration(seconds: 2));
    print('保存用户信息成功');
  });
}
